﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Controller;
using Model;

namespace GUI
{
    public partial class FrmPakkeTavle : Form
    {
        Produktionssystem produktionssystem;

        int tavleId = 4;
        
        public FrmPakkeTavle()
        {
            InitializeComponent();
            produktionssystem = new Produktionssystem();
            OpdaterOrdrelinier.Enabled = true;
            produktionssystem.OpdaterTavler();
            OpdaterProduktionsTavle();
        }

        private void OpdaterProduktionsTavle_Tick(object sender, EventArgs e)
        {
            lstProduktionsTavle.Items.Clear();
            produktionssystem.OpdaterTavler();
            OpdaterProduktionsTavle();
        }

        private void OpdaterProduktionsTavle()
        {
            int antal = produktionssystem.Antal(tavleId);
            for (int i = 0; i < antal; i++)
            {
                ListViewItem ordrelinie = new ListViewItem(produktionssystem.HentProduktionsListe(tavleId)[i].DATO.ToString("dd/MM, yyyy"));
                ordrelinie.SubItems.Add(produktionssystem.HentProduktionsListe(tavleId)[i].VAREBET.ToString());
                ordrelinie.SubItems.Add(produktionssystem.HentProduktionsListe(tavleId)[i].KILO.ToString());
                ordrelinie.SubItems.Add(produktionssystem.HentProduktionsListe(tavleId)[i].ORDRELINIEID.ToString());
                lstProduktionsTavle.Items.Add(ordrelinie);
            }
        }

        private void btnHovedmenu_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnFaerdig_Click(object sender, EventArgs e)
        {
            int salgsordrelinieId = 0;
            int selectedIndex = 0;

            selectedIndex = lstProduktionsTavle.SelectedIndices[0];

            ListViewItem ordrelinie = lstProduktionsTavle.Items[selectedIndex];

            salgsordrelinieId = Convert.ToInt32(ordrelinie.SubItems[3].Text);

            try
            {

                produktionssystem.AendreLinieStatus(salgsordrelinieId, 5);
                produktionssystem.ClearListe(tavleId);
                produktionssystem.OpdaterTavler();
                //OpdaterProduktionsTavle();
            }

            catch (Exception)
            {
                MessageBox.Show("Ordren blev ikke afsluttet korrekt");
            }

            try
            {
                

                produktionssystem.LinieFaerdig(salgsordrelinieId, tavleId);

                lstProduktionsTavle.Items.Clear();
                produktionssystem.ClearListe(tavleId);
                produktionssystem.OpdaterTavler();
                OpdaterProduktionsTavle();
            }

            catch (Exception)
            {
                MessageBox.Show("Vælg en linie");
            }
        }

        private void OpdaterOrdrelinier_Tick(object sender, EventArgs e)
        {
            produktionssystem.ClearTavler();
            lstProduktionsTavle.Items.Clear();
            produktionssystem.OpdaterTavler();
            OpdaterProduktionsTavle();
        }
    }
}
